An important technology growing out of Internet usage has been the use of Web services. Web services are network-based (particularly Internet-based) applications that perform a specific task and conform to a specific technical format. Web services are represented by a stack of emerging standards that describe a service-oriented, component-based application architecture, collectively providing a distributed computing paradigm having a particular focus on delivering services across the Internet.
Generally, Web services are implemented as self-contained modular applications that can be published in a ready-to-use format, located, and invoked across the World Wide Web. When a Web service is deployed, other applications and Web services can locate and invoke the deployed service. They can perform a variety of functions, ranging from simple requests to complicated business processes.
Traditionally, Web pages were static files that were downloaded to a user's browser, and the browser interpreted the page for display, as well as handling user input to objects such as forms or buttons. Web services extend the Web's capability to include dynamic content and user interaction. Web services are typically configured to use standard Web protocols such as Hypertext Transfer Protocol (HTTP), Hypertext Markup Language (HTML), Extensible Markup Language (XML) and Simplified Object Access Protocol (SOAP). HTTP, HTML, and XML are typically used to handle user input and output of Web pages and other user data. SOAP is typically used for request and reply messages between Web services.
The use of Web services has made the browser a much more powerful tool. Far from being simple static Web pages, Web services now can handle tasks as complex as any computer program, yet can be accessed and run anywhere due to the ubiquity of browsers and the Internet.
The complex behaviors provided by Web services require more than standard HTML layout skills to implement. The task of writing and debugging Web services falls to computer programmers. Programmers have the ability to design Web service objects, since Web services objects use instructions like traditional programming languages. However, unlike traditional computer programs, Web services are designed primarily for easy interaction with other Web services.
Although traditional programs can be designed to interact with other programs, such interaction is usually limited. Most computer programs can handle simple interactions such as cut and paste, but full interaction such as remote method invocation between disparate programs is the exception rather than the rule.
In contrast, Web services are designed for interaction. This interactivity has been enhanced by the fact they are built upon standard, open, widely adopted, and well understood protocols. It easier than ever to deploy independently developed Web services that interact naturally. However, this high level of interaction makes debugging Web services more difficult. When developing a unified application, standard tools such as debuggers can be used to track program execution. However, Web services may involve multiple programs interacting on various computers anywhere in the world. These interactions may be hard to predict and track during run-time, especially since some public Web services may not be accessible by developers at a troubleshooting level.